//
//  BaseView.m
//  DreamOf
//
//  Created by 薛小刚 on 2018/5/24.
//  Copyright © 2018年 薛小刚. All rights reserved.
//

#import "BaseView.h"
#import <Masonry.h>
#import <MJRefresh.h>
#import "XGHeader.h"
#import "XGGifHeader.h"
#import "XGFooter.h"
#import "XGGifFooter.h"

@interface BaseView()<UITableViewDataSource, UITableViewDelegate, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>

@end

@implementation BaseView

- (id)init {
    if (self = [super init]) {
        self.backgroundColor = [UIColor color_main_background_color];
    }
    return self;
}


- (UITableView *)tableView {
    if (nil == _tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) style:UITableViewStyleGrouped];
        _tableView.backgroundColor = [UIColor color_main_background_color];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.estimatedRowHeight = 50;
        _tableView.estimatedSectionFooterHeight = 10;
        _tableView.estimatedSectionHeaderHeight = 10;
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.showsVerticalScrollIndicator = NO;
        _tableView.showsHorizontalScrollIndicator = NO;
        _tableView.emptyDataSetSource = self;
        _tableView.emptyDataSetDelegate = self;
        [self addSubview:_tableView];
    }
    return _tableView;
}


- (void)setTableViewFrameWithTop:(CGFloat)top left:(CGFloat)left right:(CGFloat)right bottom:(CGFloat)bottom {
    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.mas_top).offset(top);
        make.bottom.equalTo(self.mas_bottom).offset(bottom);
        make.left.equalTo(self.mas_left).offset(left);
        make.right.equalTo(self.mas_right).offset(right);
    }];
}


- (void)setTableViewHeaderFresh:(TableViewHeaderFresh)fresh {
    /// 不是gif动画的刷新,在xgheader里面设置刷新的文字与颜色
    XGHeader * header = [XGHeader headerWithRefreshingBlock:^{
        /// 重新请求数据
        fresh();
    }];
    self.tableView.mj_header = header;
}

- (void)setTableViewFooterFresh:(TableViewHeaderFresh)fresh {
    XGFooter * footer = [XGFooter footerWithRefreshingBlock:^{
        fresh();
        /// 重新加载数据
    }];
    self.tableView.mj_footer = footer;
}
- (void)endRefresh {
    [self.tableView.mj_header endRefreshing];
    
    [self.tableView.mj_footer endRefreshing];
}

#pragma mark tableView的代理方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (self.numberOfSectionsBlock) {
        return self.numberOfSectionsBlock(tableView);
    }
    return 1;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    if (self.viewForHeaderBlock) {
        return self.viewForHeaderBlock(tableView, section);
    }
    return nil;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    if (self.viewForFooterBlock) {
        return self.viewForFooterBlock(tableView, section);
    }
    return nil;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (self.numberOfRowsBlock) {
        return self.numberOfRowsBlock(tableView, section);
    }
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.cellForRowBlock) {
        return self.cellForRowBlock(tableView, indexPath);
    }
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"testCell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"testCell"];
    }
    return cell;
    
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.didSelectRow) {
        self.didSelectRow(tableView, indexPath);
    }
}

- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView {
    NSString *text = @"暂无数据";
    
    NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:15.0f], NSForegroundColorAttributeName: [UIColor darkGrayColor]};
    return [[NSAttributedString alloc] initWithString:text attributes:attributes];
}

- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView {
    if (self.emptyDataShowImage) {
        return self.emptyDataShowImage();
    }
    return [UIImage imageNamed:@"empty_data_icon"];
}

- (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view {
    if (self.emptyDataAction) {
        self.emptyDataAction();
    }
}

- (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView {
    if (self.emptyShow) {
        return self.emptyShow();
    }
    return YES;
}



@end
